package com.snake.controllers;
//
//import com.foxinmy.weixin4j.exception.WeixinException;
//import com.foxinmy.weixin4j.model.WeixinPayAccount;
//import com.foxinmy.weixin4j.mp.WeixinProxy;
//import com.foxinmy.weixin4j.mp.model.OauthToken;
//import com.foxinmy.weixin4j.payment.WeixinPayProxy;
//import com.foxinmy.weixin4j.payment.mch.Redpacket;
//import com.foxinmy.weixin4j.payment.mch.RedpacketSendResult;
//import com.foxinmy.weixin4j.sign.WeixinPaymentSignature;
//import com.foxinmy.weixin4j.util.Consts;
//import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
//import com.snake.common.WeixinPayProxyManager;
//import com.snake.repositories.RedBagRepository;
//import com.snake.repositories.TokenRepository;
//import com.snake.repositories.UserRepository;
//import com.snake.util.DateUtil;
//import com.snake.util.HttpClientUtil;
//import com.snake.util.MyCashApi;
//import com.snake.util.PayManageUtil;
//import com.snake.util.WxUtil;
//
//import io.swagger.annotations.ApiOperation;
//import net.sf.json.JSONObject;
//
//import org.apache.catalina.servlet4preview.http.HttpServletRequest;
//import org.apache.log4j.Logger;
//import org.apache.poi.hssf.usermodel.HSSFWorkbook;
//import org.apache.poi.ss.usermodel.Cell;
//import org.apache.poi.ss.usermodel.CellStyle;
//import org.apache.poi.ss.usermodel.Row;
//import org.apache.poi.ss.usermodel.Sheet;
//import org.apache.poi.ss.usermodel.Workbook;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedWebappClassLoader;
//import org.springframework.web.bind.annotation.*;
//
//import javax.servlet.ServletOutputStream;
//import javax.servlet.http.HttpServletResponse;
//
//import java.io.BufferedInputStream;
//import java.io.BufferedOutputStream;
//import java.io.ByteArrayInputStream;
//import java.io.ByteArrayOutputStream;
//import java.io.File;
//import java.io.FileInputStream;
//import java.io.IOException;
//import java.io.InputStream;
//import java.io.PrintWriter;
//import java.io.UnsupportedEncodingException;
//import java.math.BigDecimal;
//import java.math.RoundingMode;
//import java.net.URLEncoder;
//import java.text.DecimalFormat;
//import java.text.ParseException;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.Calendar;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.Random;
//import java.util.TimeZone;
//
///**
// * Created by zhaohaochen on 2016/12/26.
// */
//@RestController
//@RequestMapping(value = "/api/method")
public class MethodController {
//	public static Logger logger = Logger.getLogger(MethodController.class
//			.getName());
//	public static Random random=new Random();
//	
//	@Value("${wx.id}")
//	private String id;
//	@Value("${wx.appid}")
//	private String appid;
//	@Value("${wx.appSecret}")
//	private String appSecret;
//	@Value("${wx.mchId}")
//	private String mchId;
//	@Value("${wx.paySignKey}")
//	private String paySignKey;
//	@Value("${wx.certificateFile}")
//	private String certificateFile;
//	@Value("${wx.certificateKey}")
//	private String certificateKey;
//	@Value("${app.startTimea}")
//	private String startTimea;
//	@Value("${app.startTimeb}")
//	private String startTimeb;
//	@Value("${wx.clientIp}")
//	private String clientIp;
//	@Value("${app.sendRedirectUrl}")
//	private String sendRedirectUrl;
//	@Value("${app.redPacketTemplate}")
//	private String redPacketTemplate;
//	@Autowired
//	private UserRepository userRepository;
//	@Autowired
//	private RedBagRepository redBagtestRepository;
//	@Autowired
//	private TokenRepository tokenRepository;
//	/*
//	 * @Autowired private Environment env;
//	 */
//
//
//	@ApiOperation(value = "公众号网页获取用户资料oauth授权：请求code，静默")
//	// @ApiImplicitParam(paramType = "header", name = "token", dataType =
//	// "String")
//	@RequestMapping(value = "/userAuthorizationURL", method = RequestMethod.GET)
//	public Map<String, Object> getUserAuthorizationURL(
//			@RequestParam("redirectUrl") String redirectUrl)
//			throws UnsupportedEncodingException {
//		// TODO 需要判断活动有效期
//		WeixinProxy _weixinProxy = WeixinPayProxyManager.getWeixinProxy(appid,
//				appSecret);
//		/*
//		 * String userAuthorizationURL =
//		 * _weixinProxy.getOauthApi().getUserAuthorizationURL(
//		 * URLEncoder.encode(redirectUrl, Consts.UTF_8.name()), "state",
//		 * "snsapi_base");
//		 */
//		String userAuthorizationURL = _weixinProxy.getOauthApi()
//				.getUserAuthorizationURL(redirectUrl, "state", "snsapi_base");
//		System.out.println(userAuthorizationURL);
//		Map<String, Object> m = new HashMap<String, Object>();
//		m.put("url", userAuthorizationURL);
//		Map<String, Object> map = new HashMap<String, Object>();
//		map.put("data", m);
//		map.put("code", 200);
//		map.put("message", "操作成功");
//		map.put("success", true);
//		return map;
//	}
//
//	@ApiOperation(value = "公众号网页获取用户资料oauth授权：请求code，非静默")
//	// @ApiImplicitParam(paramType = "header", name = "token", dataType =
//	// "String")
//	@RequestMapping(value = "/userAuthorizationURLInfo", method = RequestMethod.GET)
//	public Map<String, Object> getUserAuthorizationURLInfo(
//			@RequestParam("redirectUrl") String redirectUrl)
//			throws UnsupportedEncodingException {
//		// TODO 需要判断活动有效期
//		/*WeixinProxy _weixinProxy = WeixinPayProxyManager.getWeixinProxy(appid,
//				appSecret);*/
//	
//		/*String userAuthorizationURL = _weixinProxy.getOauthApi().getUserAuthorizationURL(redirectUrl,
//				"state", "snsapi_userinfo");*/
//		String userAuthorizationURL="https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appid+"&"+
//		"redirect_uri="+URLEncoder.encode(redirectUrl, Consts.UTF_8.name())+"&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
//		System.out.println(userAuthorizationURL);
//		Map<String, Object> m = new HashMap<String, Object>();
//		m.put("url", userAuthorizationURL);
//		Map<String, Object> map = new HashMap<String, Object>();
//		map.put("data", m);
//		map.put("code", 200);
//		map.put("message", "操作成功");
//		map.put("success", true);
//		return map;
//	}
//
//	
//
//	@ApiOperation(value = "获得code的回调")
//	@RequestMapping(value = "/redirectUrl", method = RequestMethod.GET)
//	public void redirectUrl(@RequestParam("code") String code,
//			HttpServletRequest request, HttpServletResponse response)
//			throws Exception {
//		try{
//			String openid = getUserInfos(code);
//			System.out.println("openid:"+openid);
//			// TODO 这里修改回调url
//			 response.sendRedirect(sendRedirectUrl+"?openid="+openid);
//		}catch(Exception e){
//			e.printStackTrace();
//			System.out.println("---------------保存用户访问记录失败:"+e.toString());
//			logger.error("--------------------------保存用户访问记录失败-------------e:"
//					+ e.toString());
//			response.sendRedirect(sendRedirectUrl+"?openid=1211");
//		}
//		
//	}
//	@RequestMapping(value = "/redirectUrlTest", method = RequestMethod.GET)
//	public void redirectUrlTest(
//			HttpServletRequest request, HttpServletResponse response){
//		try {
//		String openid="oRDZMv_DlTrRnzNzzBWUphGg4GpM";
//		long time = System.currentTimeMillis(); 
//		// 获取用户信息
//		//保存用户访问记录
//		//User user = new User();
//		/*user.setName(openid);
//		SimpleDateFormat format =  new SimpleDateFormat("yyyy-MM-dd");  
//		String formatDate = format.format(time);  
//		user.setInsertDate(formatDate);
//		user.setOpenid(openid);*/
//		//User save = userRepository.save(user);
//		}catch(Exception e){
//			e.printStackTrace();
//			logger.info("--------------------------保存用户访问记录失败-------------e:"
//					+ e.toString());
//		}
//		// TODO 这里修改回调url
//		// response.sendRedirect("url"+"?openid="+_ot.getOpenId());
//	}
//   
//	
//	public String getUserInfos(String code) throws Exception {
//		System.out.println("-------------code:"+code);
//		String accessToken="";
//		String openid="";
//		//获取数据库accessToken
//		//List<Token> tokenList = new ArrayList<Token>();
//		Map<String, Object> wxAccessTokenMap = WxUtil.getWXAccessToken(appid,appSecret,code);
//		/*Token token=new Token();
//		token.setAccessToken(wxAccessTokenMap.get("accessToken").toString());
//		long timess = DateUtil.getTimess(wxAccessTokenMap.get("accessExpires").toString());
//		token.setExpiresIn(timess/1000);
//		token.setOpenid(wxAccessTokenMap.get("openid").toString());
//		token.setRefreshToken(wxAccessTokenMap.get("refreshToken").toString());
//		token.setScope(wxAccessTokenMap.get("scope").toString());
//		tokenRepository.save(token);*/
//		accessToken=wxAccessTokenMap.get("accessToken").toString();
//		System.out.println("------------------accessToken:"+accessToken);
//		openid=wxAccessTokenMap.get("openid").toString();
//		System.out.println("------------------openid:"+openid);
//		
//		if(!accessToken.equals("")){
//			System.out.println("------------------accessToken不等于空:"+accessToken);
//			Map<String, Object> wxUserInfo = WxUtil.getWXUserInfos(openid, accessToken);
//			//User user=new User();
//			if(wxUserInfo!=null){
//				/*user.setOpenid(openid);
//				user.setName(wxUserInfo.get("nickName").toString());
//				user.setNickName(wxUserInfo.get("nickName").toString());
//				user.setSex(wxUserInfo.get("sex").toString());
//				user.setCity(wxUserInfo.get("city").toString());
//				user.setCountry(wxUserInfo.get("country").toString());
//				user.setHeadimgurl(wxUserInfo.get("headimgurl").toString());
//				user.setProvince(wxUserInfo.get("province").toString());
//				long currentTime = System.currentTimeMillis();
//				currentTime=currentTime+28800000;
//				SimpleDateFormat format =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
//				String formatDate = format.format(currentTime);  
//				user.setInsertDate(formatDate);*/
//				//User save = userRepository.save(user);
//			}else{
//				System.out.println("------------------wxUserInfo等于空:"+wxUserInfo.toString());
//				/*user.setOpenid(openid);
//				long currentTime = System.currentTimeMillis();
//				currentTime=currentTime+28800000;
//				SimpleDateFormat format =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
//				String formatDate = format.format(currentTime); 
//				user.setInsertDate(formatDate);*/
//				//User save = userRepository.save(user);
//			}
//		}else{
//			System.out.println("------------------wxUserInfo不存在:");
//			/*User user=new User();
//			user.setOpenid(openid);
//			long currentTime = System.currentTimeMillis();
//			currentTime=currentTime+28800000;
//			SimpleDateFormat format =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
//			String formatDate = format.format(currentTime); 
//			user.setInsertDate(formatDate);*/
//			//User save = userRepository.save(user);
//		}
//		return openid;
//	}
//	
//	 
}